package edu.zut.dao;

import edu.zut.pojo.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 数据层接口
 * @Mapper :标明当前是一个mapper接口
 * 接口 + xml  针对复杂的sql
 * 接口 + 注解  单表
 */
@Mapper
public interface UserInfoMapper {

    List<UserInfo> queryInfos();

    UserInfo queryById(Integer id);

//    当映射接口中的方法参数是多个时，需要在对应参数前添加注解@Param
    UserInfo queryByEmailAndPassword(@Param("mail") String email, @Param("psw") String password);

    //当参数是多个时，可以将其封装到对象中
    UserInfo queryByUsernameAndPassword(UserInfo userInfo);

    //根据id 修改email
    int updateEmailById(UserInfo userInfo);

    //使用注解简化开发   @Select  @Insert  @Update  @Delete
    @Select("select * from user_info where fullName like concat ('%',#{name},'%')")
    List<UserInfo> queryLikeName(String name);


    List<UserInfo> queryInfos2();


    List<UserInfo> queryByCondition(UserInfo userInfo);

    int updateByCondition(UserInfo userInfo);

    //批量查询
    List<UserInfo> queryByIds(List<Integer> ids);

    UserInfo queryInfoAndItemsByUId(Integer id);


}
